home *** CD-ROM | disk | FTP | other *** search
/ Aminet 19 / Aminet 19 (1997)(GTI - Schatztruhe)[!][Jun 1997].iso / Aminet / comm / cnet / cnet_backup.lha / cnetamigabackup / CNetBackUpA < prev   
Text File  |  1997-04-06  |  8KB  |  198 lines

  1. /**************************************************************************\
  2.    $VER: CNet Amiga BackUpA; Amaint Module, v3.51 (6-Apr-97) by Dotoran!
  3. \**************************************************************************/
  4. options results;signal on SYNTAX;signal on ERROR;signal on IOERR
  5. a=sourceline(2);parse var a . ", "ver" ("vdate")" .
  6. tr=transmit;se=sendstring;gc=getchar;gu=getuser;gs=getscratch;mg=maygetchar
  7. a="rexxsupport.library";if ~show("l",a) then if ~addlib(a,0,-30) then exit
  8. parse source . . fp .;df=left(fp,max(lastpos('/',fp),lastpos(':',fp)))
  9.  
  10. tim=date(s);c=0;changewhere "CNet BackUpA";gu 1100454;more=result
  11. setobject 0;putuser 1100454;fnR=df"CNetBackUp.";cfg=fnR"CFG"
  12.  
  13. tr "f1n1z4cer1 CNet Amiga BackUp, "ver" AMaint z0r0"
  14.  
  15. if ~exists(cfg) then do
  16.   tr "n1cb`ca"df"CNetBackUp.CFGcb' c6was c9NOT c6found.";signal QUITBYE;end
  17. else call READCONFIG
  18.  
  19. do i=1 to files
  20.   if tim-tim.i>=day.i then do;c=c+1;bn.c=i;end
  21.   file.i=overlay(tim,file.i,1)
  22. end i;call SAVECONFIG
  23.  
  24. if c=0 then do;tr "n1caNothing c6to cbBackUp c6tonight.";signal QUITBYE;end
  25.  
  26. do z=1 to c
  27.   file=bn.z;call READFILE;zb=(ext.file~="BAK")
  28.   badflop=0;tem=tem.file;des=des.file
  29.   bname="CNetBackUp_"ext.file".LHA"
  30.  
  31.   tr "n1z4cer1 Backing Up CNet Using `"nam.file"' File z0r0n1"
  32.  
  33.   if zb then do
  34.     zz=pragma("w","n");a=exists(des);zz=pragma("w")
  35.     if a=0 then do;des=df;for.file=0;badflop=1;end
  36.     if exists(des||bname) then do
  37.       address command 'PROTECT "'des||bname'" d'
  38.       address command 'DELETE "'des||bname'"';end
  39.   end
  40.  
  41.   mi=0;miF.=0;fi=1;fi.=""
  42.   do i=1 to total;fn=fn.i
  43.     tr "cf[z0car1 Testing File r0cf> ca"fn
  44.     if ~exists(fn) then do
  45.       tr "cf[z5cb Missing File z0> cd"fn
  46.       mi=mi+1;mi.mi=fn;iterate i;end
  47.  
  48.     if zb then do
  49.       if dir.a then do
  50.         f1=pos(":",fn);d1=left(fn,f1-1);fn=substr(fn,f1+1)
  51.         if ~exists(tem||d1) then do
  52.           tr "cf[z0c9r1 Creating Dir r0cf> c9"d1
  53.           address command 'MAKEDIR "'tem||d1'"';end
  54.         do j=1 until f1=0;f1=pos("/",fn)
  55.           if f1>0 then do;d1=d1"/"left(fn,f1-1);fn=substr(fn,f1+1);end
  56.           if ~exists(tem||d1) then do
  57.             tr "cf[z0c9r1 Creating Dir r0cf> c9"d1
  58.             address command 'MAKEDIR "'tem||d1'"';end
  59.         end j
  60.         tr "cf[z0cbr1 Copying File r0cf> cb"fn.i
  61.         address command 'COPY "'fn.i'" "'tem||d1'/'fn'"'
  62.       end
  63.       else do
  64.         if index(":/",right(fn,1))>0 then fn=left(fn,length(fn)-1)
  65.         if length(tem||bname||fi.fi||fn)+26<=150 then fi.fi=fi.fi" "fn
  66.           else do;fi=fi+1;fi.fi=fi.fi" "fn;end
  67.       end
  68.     end
  69.  
  70.     else do
  71.       if index(":/",right(fn.i,1))>0 then do ; zy=showdir(fn.i,"f"," ")
  72.         tr "cf[z0cdr1 Cloning Path r0cf> cd"fn.i"#?.bak"
  73.         do j=1 to words(zy) ; zz=word(zy,j)
  74.           if right(upper(zz),4)~=".BAK" then do ; se "   "zz".bak..."
  75.             address command 'COPY "'fn.i||zz'" "'fn.i||zz'.bak" COM';tr "ok";end
  76.         end j
  77.       end
  78.       else do
  79.         tr "cf[z0cdr1 Cloning File r0cf> cd"fn.i".bak"
  80.         address command 'COPY "'fn.i'" "'fn.i'.bak" COM'
  81.       end
  82.     end
  83.  
  84.   end i
  85.  
  86.   file.file=overlay(tim,file.file,1);call SAVECONFIG
  87.  
  88.   if badflop=0 & for.file>0 then do
  89.     tr "cf[z0ccr1 Formatting.. r0cf> cc"des"  cf(cc"word("FULL QUICK",for.file)"cf)"
  90.     form="";if for.file=2 then form="QUICK"
  91.     tr "#4FORMAT <nil: drive "des" name CNetBackUps NOICONS "form" FFS}";end
  92.  
  93.   if exists(tem||bname) then do;a=tem||bname;c=2
  94.     do until ~exists(tem||a);a=left(bname,length(bname)-4)"_"c".LHA";c=c+1;end
  95.     tr "cf[z0cer1 LHA Exists...r0cf> c6renamed as cb`ca"a"cb'"
  96.     address command 'rename "'tem||bname'" "'tem||a'"';end
  97.  
  98.   if zb then do
  99.     tr "cf[z0cer1 Packing File r0cf> ce"bname"n1"
  100.     zz="";if com.file then zz="z";z2="";if dis.file then z2="F"
  101.     temp=tem;if bac.file then temp=des
  102.     if dir.file then tr "#4LHA -arex2D2"zz||z2"P"pri.file" a "temp||bname" "tem"#?}"
  103.     else do
  104.       do i=1 to fi 
  105.         lfn1="";lfn2="";do j=1 to words(fi.i);f.j=word(fi.i,j)
  106.           if word(statef(f.j),1)~="DIR" then lfn2=lfn2" "f.j;else lfn1=lfn1" "f.j
  107.         end j;fi.i=strip(lfn1)" "strip(lfn2)
  108.         tr "#4LHA -arex2D2"zz||z2"P"pri.file" a "tem||bname" "fi.i"}"
  109.       end i
  110.     end
  111.  
  112.     if com.file then do
  113.       tr "#4LHA -arex2D2Z"z2"P"pri.file" a "temp||bname"2 "temp||bname"}"
  114.       tr "#4DELETE "temp||bname"}"
  115.       tr "Renaming `"temp||bname"2'...#4RENAME "temp||bname"2 "temp||bname"}ok"
  116.     end
  117.  
  118.     if ~bac.file then do
  119.       if exists(des||bname) then do;a=des||bname;c=2
  120.         do until ~exists(des||a);a=left(bname,length(bname)-4)"_"c".LHA";c=c+1;end
  121.         tr "cf[z0cer1 LHA Exists...r0cf> c6renamed as cb`ca"a"cb'"
  122.         address command 'rename "'des||bname'" "'tem||a'"';end
  123.  
  124.       tr "cf[z0cdr1 Copying File r0cf> cd"bname
  125.       address command 'COPY "'tem||bname'" "'des||bname'"'
  126.     end
  127.  
  128.     d=date("s");da=left(date("w",d,"s"),3)"., "date("m",d,"s")" "strip(substr(d,7,2),"l","0")", "left(d,4)" @ "time("c")
  129.     com="CNet Amiga BackUp, "ver" Created on "da
  130.     address command 'FILENOTE "'des||bname'" "'com'"'
  131.     address command 'PROTECT "'des||bname'" re'
  132.  
  133.     if dir.file | ~bac.file then do;tem=tem.file
  134.       tr "cf[z0c6r1 Cleaning Up! r0cf> c6"tem
  135.       address command "DELETE "tem"#? ALL"
  136.     end
  137.  
  138.     se "cf[z0cbr1 Testing LHA  r0cf> "
  139.  
  140.     log=left(bname,length(bname)-4)
  141.     se "#4LHA -P"pri.file" t >sysdata:log/"log" "des||bname"}"
  142.  
  143.     call open(f1,"sysdata:log/"log,"r")
  144.       do i=1 until eof(f1);l.i=readln(f1);end i;t=i-1
  145.     call close(f1);check=substr(l.t,11,7)
  146.  
  147.     if check="success" then do 
  148.       test=1;tr "caPassed Integrity Check!";end
  149.       else do;test=0;tr "c9Failed Integrity Check!";end
  150.  
  151.     call open(f1,"sysdata:log/"log,"a")
  152.       call writeln(f1,"");call writeln(f1,com)
  153.       if badflop=1 then do
  154.         call writeln(f1,"")
  155.         call writeln(f1,"No Floppy in DESTINATION DRIVE, so archive was stored in "df)
  156.       end
  157.     call close(f1)
  158.   end
  159.  
  160.   if test=0 | badflop=1 | mai.file=0 then do
  161.  
  162.     if zb then do
  163.       tr "cf[z0cbr1 SysMail Sent r0cf> c6CNet BackUp: "log
  164.       loadeditor "sysdata:log/"log;setmailsubj "CNet BackUp: "log;writemail 1;cleareditor
  165.     end
  166.   
  167.     if mi>0 then do;call open(f1,"ram:cnetbackup","w")
  168.       call writeln(f1,"The following files were MISSING from the `"nam.file"' backup file, so were NOT backed up:n1")
  169.       do zz=1 to mi;call writeln(f1,mi.zz);end zz;call writeln(f1,"n1"com);call close(f1)
  170.       loadeditor "ram:cnetbackup";setmailsubj "Missing BackUp Files Alert!";writemail 1;cleareditor
  171.       address command "DELETE ram:cnetbackup";end
  172.   end
  173.  
  174. end z
  175.  
  176.   tr "n1z4cer1 CNet Amiga BackUp AutoMaint Complete! z0r0"
  177.  
  178. QUITBYE:;setobject more;putuser 1100454;exit
  179.  
  180. SAVECONFIG:;call open(f1,cfg,"w");call writeln(f1,files)
  181.   do i=1 to files;call writeln(f1,file.i);end i;call writeln(f1,drives);call close(f1);save=0
  182.  
  183. READCONFIG:;call open(f1,cfg,"r");files=readln(f1);do i=1 to files;file.i=readln(f1)
  184.   parse var file.i tim.i"|"ext.i"|"nam.i"|"tem.i"|"des.i"|"day.i"|"dir.i"|"bac.i"|"for.i"|"pri.i"|"mai.i"|"com.i"|"dis.i"|"j;end i;drives=readln(f1);call close(f1);return
  185.  
  186. READFILE:
  187.   call open(f1,fnR||ext.file,"r")
  188.     do i=1 until eof(f1);fn.i=readln(f1);end i
  189.   call close(f1);total=i-1;return
  190.  
  191. SYNTAX:;ERROR:;IOERR:;e1="n1 Error: "rc" ("errortext(rc)")"
  192.   e2="  Line: "left(sigl,4)"File:";c="`"fp", "ver"'";e2=e2" "c;tr e1;tr e2
  193.   logentry e1;logentry e2;e=strip(translate(sourceline(sigl),"\{",""))
  194.   do while e~="";e3="Source: "left(e,37);tr e3;logentry e3;e=substr(e,38);end
  195.   bufferflush;signal QUITBYE
  196. /**************************************************************************\
  197. \****************************************** Frontiers BBS (716)/823-9892 **/
  198.